/*
    Copyright 2009 Semantic Discovery, Inc. (www.semanticdiscovery.com)

    This file is part of the Semantic Discovery Toolkit.

    The Semantic Discovery Toolkit is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    The Semantic Discovery Toolkit is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with The Semantic Discovery Toolkit.  If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;

namespace SemanticDiscovery.Util.String
{
  /// <summary>
  /// NUnit Tests for the ExtensionMethods class.
  /// </summary>
  /// <author>Abe Sanderson</author>
  [TestFixture]
  public class TestExtensionMethods {

    [TestCase]
    public void TestSlice() {
      string[] inputs = new string[] {
        "foo bar bash",
        "foo bar bash",
        "foo bar bash",
        "foo bar bash",
      };
      int[] starts = new int[] {
        0,
        0,
        4,
        8,
      };
      int[] ends = new int[] {
        1,
        0,
        7,
        12,
      };
      string[] expected = new string[] {
        "f",
        "",
        "bar",
        "bash",
      };

      for (int i = 0; i < inputs.Length; i++) {
        string input = inputs[i];
        int start = starts[i];
        int end = ends[i];

        string ex = expected[i];

        string substr = input.Slice(start,end);
        Assert.AreEqual(ex, substr);
      }

    }

  }
}
